在這篇文章,我們將做一個簡單的實作,輸出與我興趣相符的會員的簡介到Queue裡面,等待郵件服務排成來發送(郵件服務將在下一篇進行介紹)



點選儲存後會幫我們建立這個Queue喔
方才我們已經Bind好Queue輸出的位置(outputQueueItem)
run.csx裡,加上outputQueueItem的輸出參數
IAsyncCollector<Member> outputQueueItem
run.csx裡,這行程式碼將資料到Queue裡面
await outputQueueItem.AddAsync(m);
可以看到function.json的binding值(剛才設定輸出時,設定完成後自動加入)
    {
      "type": "queue",
      "name": "outputQueueItem",
      "queueName": "memberhobby",
      "connection": "AzureWebJobsStorage",
      "direction": "out"
    }
using System;
using System.Net;
using System.Collections.Generic;
public class Member{
    public string name { get; set; }
    public string hobby { get; set; }
    public Member(string n, string h){
        name = n;
        hobby = h;
    }
}
//這裡我們多加了一個參數,IAsyncCollector<Member> outputQueueItem
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log, IAsyncCollector<Member> outputQueueItem)
{
    log.Info("C# HTTP trigger 開始比對興趣");
    string name = "";
    string hobby = "";
    // Get request body
    dynamic data = await req.Content.ReadAsAsync<object>();
    name = data?.name;
    hobby = data?.hobby;
    List<string> hobby_list = hobby.Split(',').ToList();
    List<string> matched_hobbies = new List<string> { "棒球", "游泳", "旅遊" };
    List<string> matched_list = hobby_list.Intersect(matched_hobbies).ToList();
    //找到相符的興趣
    string matched_hobby = String.Join(", ", matched_list.ToArray());
    log.Info(matched_hobby);
    if(matched_list.Count != 0){
        Member m = new Member(name,hobby);
        //這裡我們送了Member格式的資料到Queue裡面
        await outputQueueItem.AddAsync(m);
    }
    return req.CreateResponse(HttpStatusCode.OK, "新會員" + name + "她的興趣是" + hobby + ", 相符的興趣是"+matched_hobby);
    
}
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log, IAsyncCollector<Member> outputQueueItem)
最右邊的參數[IAsyncCollector outputQueueItem],是我們用來Bind Queue的輸出
事實上輸出可以有很多類型,例如可以有以下寫法
但因為我們此次使用非同步程式碼(async),則不允許使用 out 參數,因此我們需使用 IAsyncCollector




快速連結:(實作)打造工程師交友小工具-串接第三方寄信API(上篇)